package com.lt73.mapstrutdemo.config;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;

/**
 * @Author: hanxiao
 * @Date: 2022/3/19 16:30
 */
@Configuration //说明这是一个配置类
@EnableSwagger2// 该注解开启Swagger2的自动配置
@ComponentScan("com.lt73.mapstrutdemo.controller.*")
public class SwaggerConfig {  //随便的一个类名

    @Bean
    public Docket swaggerCoreConfig() {
        // 构造函数传入初始化规范，这是swagger2规范
        return new Docket(DocumentationType.SWAGGER_2)
                // 添加api详情信息
                .apiInfo(getInfo())
                // 添加默认参数列表
                .globalOperationParameters(new ArrayList<>())
                .select()
                // 添加过滤条件,
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                // 这里是控制哪些路径的api会被显示出来，比如下方的参数就是除了/user以外的其它路径都会生成api文档
                .paths((String a) ->
                        !a.equals("/user"))
                .build();
    }

    private ApiInfo getInfo() {
        // contact为联系信息对象，在访问接口页面时会呈现，参数一为名称，参数二为联系url，参数三为
        return new ApiInfoBuilder()
                .contact(
                        new Contact("小笼包",
                                "https://github.com/lhdhr5828",
                                "873093067@qq.com"))
                .title("room api")
                .description("房产信息project")
                .termsOfServiceUrl("https://www.baidu.com")
                .extensions(new ArrayList<>(16))
                .license("许可信息")
                .version("1.0").build();
    }
}